Fab Academy 2020 - "How to make almost anything"
The electronic components I used are listed in the below table.
Component | Quantity |
---|---|
ATTiny 44 microcontroller | 1 |
1uf Capacitor | 1 |
100 Ohm Resistor | 2 |
49 Ohm Resistor | 1 |
0 Ohm Resistor | 1 |
10K Ohm Resistor | 1 |
pull up Resistors | 1 |
20 MHz Crystal | 1 |
1sp | 1 |
ubuntu@ubuntu:~$ sudo apt-get install flex byacc bison gcc libusb-dev avrdude
Reading package lists... Done
Building dependency tree
Reading state information... Done
gcc is already the newest version (4:7.4.0-1ubuntu2.3).
bison is already the newest version (2:3.0.4.dfsg-1build1).
flex is already the newest version (2.6.4-6).
libusb-dev is already the newest version (2:0.1.12-31).
avrdude is already the newest version (6.3-4).
byacc is already the newest version (20140715-1build1).
The following packages were automatically installed and are no longer required:
efibootmgr libfwup1 libwayland-egl1-mesa
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
ubuntu@ubuntu:~$ sudo apt-get install gcc-avr
Reading package lists... Done
Building dependency tree
Reading state information... Done
gcc-avr is already the newest version (1:5.4.0+Atmel3.6.0-1build1).
The following packages were automatically installed and are no longer required:
efibootmgr libfwup1 libwayland-egl1-mesa
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
ubuntu@ubuntu:~$ sudo apt-get install avr-libc
Reading package lists... Done
Building dependency tree
Reading state information... Done
avr-libc is already the newest version (1:2.0.0+Atmel3.6.0-1).
The following packages were automatically installed and are no longer required:
efibootmgr libfwup1 libwayland-egl1-mesa
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
ubuntu@ubuntu:~$ sudo apt-get install libc6-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6-dev is already the newest version (2.27-3ubuntu1).
The following packages were automatically installed and are no longer required:
efibootmgr libfwup1 libwayland-egl1-mesa
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
ubuntu@ubuntu:~$ cd ~/Desktop
ubuntu@ubuntu:~/Desktop$ wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip
--2020-02-25 11:36:03-- http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip
Resolving academy.cba.mit.edu (academy.cba.mit.edu)... 18.27.130.25
Connecting to academy.cba.mit.edu (academy.cba.mit.edu)|18.27.130.25|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 141728 (138K) [application/zip]
Saving to: ‘firmware.zip’
firmware.zip 100%[==================================>] 138.41K --.-KB/s in 0.08s
2020-02-25 11:36:05 (1.69 MB/s) - ‘firmware.zip’ saved [141728/141728]
ubuntu@ubuntu:~/Desktop$ unzip firmware.zip
Archive: firmware.zip
creating: fabISP_mac.0.8.2_firmware/
inflating: fabISP_mac.0.8.2_firmware/.DS_Store
creating: __MACOSX/
creating: __MACOSX/fabISP_mac.0.8.2_firmware/
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._.DS_Store
inflating: fabISP_mac.0.8.2_firmware/main.c
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._main.c
inflating: fabISP_mac.0.8.2_firmware/main.elf
inflating: fabISP_mac.0.8.2_firmware/main.hex
inflating: fabISP_mac.0.8.2_firmware/main.o
inflating: fabISP_mac.0.8.2_firmware/Makefile
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._Makefile
inflating: fabISP_mac.0.8.2_firmware/usbconfig.h
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._usbconfig.h
creating: fabISP_mac.0.8.2_firmware/usbdrv/
inflating: fabISP_mac.0.8.2_firmware/usbdrv/.DS_Store
creating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._.DS_Store
inflating: fabISP_mac.0.8.2_firmware/usbdrv/asmcommon.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._asmcommon.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/Changelog.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._Changelog.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/CommercialLicense.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._CommercialLicense.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/License.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._License.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/oddebug.c
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._oddebug.c
inflating: fabISP_mac.0.8.2_firmware/usbdrv/oddebug.h
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._oddebug.h
inflating: fabISP_mac.0.8.2_firmware/usbdrv/oddebug.o
inflating: fabISP_mac.0.8.2_firmware/usbdrv/Readme.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._Readme.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/USB-ID-FAQ.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._USB-ID-FAQ.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/USB-IDs-for-free.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._USB-IDs-for-free.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbconfig-prototype.h
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbconfig-prototype.h
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrv.c
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrv.c
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrv.h
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrv.h
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrv.o
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm.asm
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm.asm
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm.o
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm.S
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm.S
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm12.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm12.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm128.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm128.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm15.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm15.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm16.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm16.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm165.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm165.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm18-crc.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm18-crc.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm20.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm20.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/USBID-License.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._USBID-License.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbportability.h
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbportability.h
ubuntu@ubuntu:~/Desktop$ cd fabISP_mac.0.8.2_firmware/
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make clean
rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.elf *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make hex
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c main.c -o main.o
main.c:88:13: warning: always_inline function might not be inlinable [-Wattributes]
static void delay ( void )
^
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -o main.elf usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o
rm -f main.hex main.eep.hex
avr-objcopy -j .text -j .data -O ihex main.elf main.hex
avr-size main.hex
text data bss dec hex filename
0 1984 0 1984 7c0 main.hex
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make fuse
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)
avrdude done. Thank you.
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make program
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U flash:w:main.hex:i
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: writing flash (1984 bytes):
Writing | ################################################## | 100% 2.79s
avrdude: 1984 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex contains 1984 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 1.40s
avrdude: verifying ...
avrdude: 1984 bytes of flash verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)
avrdude done. Thank you.
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)
avrdude done. Thank you.
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 17ef:608c Lenovo
Bus 001 Device 003: ID 17ef:608d Lenovo
Bus 001 Device 002: ID 8087:0a2a Intel Corp.
Bus 001 Device 009: ID 1781:0c9f Multiple Vendors USBtiny
Bus 001 Device 005: ID 0781:5567 SanDisk Corp. Cruzer Blade
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$